import { app, BrowserWindow, ipcMain, Rectangle } from 'electron'

// 用于存储窗口大小和位置的对象
let windowBounds: Rectangle | null = null
/**
 * @abstract - 基础功能
 */
export default () => {
  // 置顶窗口
  ipcMain.on('toggle-window-top', () => {
    // 监听来自渲染进程的 IPC 消息
    // 改为直接调用静态方法
    const mainWindow = BrowserWindow.getFocusedWindow()
    if (mainWindow) {
      mainWindow.setAlwaysOnTop(!mainWindow.isAlwaysOnTop())
    }
  })
  // 取消置顶窗口
  ipcMain.on('cancel-window-top', () => {
    const mainWindow = BrowserWindow.getFocusedWindow()
    if (mainWindow) {
      mainWindow.setAlwaysOnTop(false)
    }
  })
  // 最小化窗口
  ipcMain.on('minimize-window', () => {
    const mainWindow = BrowserWindow.getFocusedWindow()
    if (mainWindow) {
      mainWindow.minimize()
    }
  })

  // 窗口最大化
  ipcMain.on('maximize-window', () => {
    const mainWindow = BrowserWindow.getFocusedWindow()
    if (mainWindow) {
      // 存储当前窗口大小和位置
      windowBounds = mainWindow.getBounds()
      mainWindow.maximize()
    }
  })
  // 还原窗口
  ipcMain.on('restore-window', () => {
    const mainWindow = BrowserWindow.getFocusedWindow()

    if (mainWindow && windowBounds) {
      if (mainWindow.isMaximized()) {
        mainWindow.unmaximize()
      }
      // 设置窗口到之前存储的大小和位置
      mainWindow.setBounds(windowBounds)
    }
  })

  // 关闭窗口
  ipcMain.on('close-window', () => {
    const mainWindow = BrowserWindow.getFocusedWindow()
    if (mainWindow) {
      mainWindow.close()
    }
  })
  // 重启应用
  ipcMain.on('restart-app', () => {
    app.relaunch()
    app.quit()
  })
}
